package es.ranking.padel.beans;

import java.io.Serializable;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

import org.apache.log4j.Logger;

import es.ranking.padel.entidades.Jugador;
import es.ranking.padel.servicios.Fachada;
import es.ranking.padel.utils.JSFUtils;

@ManagedBean(name = "jugadoresListadoBean")
@RequestScoped
public class JugadoresListadoBean implements Serializable {

	private static final long serialVersionUID = 1L;

	/** The log. */
	static Logger log = Logger.getLogger(JugadorBean.class.getName());

	/** The user service. */
	@ManagedProperty(value = "#{fachada}")
	private Fachada fachada;

	/** The listado jugadores. */
	private List<Jugador> listadoJugadores;

	private Jugador selectedJugador;
	
	private Jugador[] selectedParejaJugador;

	public void eliminarJugador() {
		try {
			DatosComunesBean datosComunesBean = (DatosComunesBean) JSFUtils
					.getManagedBeanValue("datosComunesBean");
			fachada.deleteJugador(datosComunesBean.getJugadorSeleccionado());
			listadoJugadores = fachada.getJugadores();
			JSFUtils.mostrarGrowlMsg(
					Jugador.GROWL_JUGADOR_ELIMINADO_SATISFACTORIAMENTE,
					FacesMessage.SEVERITY_INFO,
					new Object[] {datosComunesBean.getJugadorSeleccionado().getNombre() });
			log.info("Jugador eliminado correctamente");
		} catch (Exception e) {
			log.error("Error al eliminar jugador: " + e.getMessage().toString());
		}

	}
	
	
	//METODOS DE NAVEGACION
	public String irClasificacion(){
		return Jugador.NAVEGACION_CLASIFICACION;
	}
	
	public String irNuevoJugador(){
		return Jugador.NAVEGACION_NUEVO_JUGADOR;
	}

	public void prueba() {
		System.out.println();
	}

	public List<Jugador> getListadoJugadores() {
		if (listadoJugadores == null) {
			listadoJugadores = fachada.getJugadores();
		}
		return listadoJugadores;
	}

	public void setListadoJugadores(List<Jugador> listadoJugadores) {
		this.listadoJugadores = listadoJugadores;
	}

	public Jugador getSelectedJugador() {
		return selectedJugador;
	}

	public void setSelectedJugador(Jugador selectedJugador) {
		this.selectedJugador = selectedJugador;
	}


	public Fachada getFachada() {
		return fachada;
	}


	public void setFachada(Fachada fachada) {
		this.fachada = fachada;
	}


	public Jugador[] getSelectedParejaJugador() {
		return selectedParejaJugador;
	}


	public void setSelectedParejaJugador(Jugador[] selectedParejaJugador) {
		this.selectedParejaJugador = selectedParejaJugador;
	}

}
